/**
 * Created by Vicky on 2017/2/23.
 */

"use strict"

//引包
const mongodb=require("mongodb");

//定义全局的变量，来接受db对象
let mydb=null;

//得到客户端
const mongoClient=mongodb.MongoClient;

//链接到数据库
const url="mongodb://localhost:27017/StudentManager";

mongoClient.connect(url,(err,db)=>{
    if(err){
        console.log(err);
        return;
    }

    //console.log(db);
    mydb=db;

});

//暴露一个对象
module.exports={
    //将ObjectId暴露出来
    ObjectId:mongodb.ObjectId,

    //查找一个
    findOne:(collectionName,conditionObj,callback)=>{
                mydb.collection(collectionName).findOne(conditionObj,(err,result)=>{
                    if(err){
                        console.log(err);
                        return;
                    }
                    //console.log(result);
                    callback(result);
        });
    },
    //查找全部
    find:(collectionName,condtitionObj,callback)=>{

        mydb.collection(collectionName).find(condtitionObj).toArray((err,result)=>{
            if(err){
                console.log(err);
                return;
            }
            //将数据库返回的结果传递给控制器
          callback(result);
        });
    },
    insertOne:(collectionName,studentObj,callback)=>{
        mydb.collection(collectionName).insertOne(studentObj,(err,result)=>{
            if(err){
                console.log(err);
                return;
            }
            if(result){
                callback(true);
            }else{
                callback(false);
            }
        })
    },
    updateOne:(collectionName,conditionObj,studentInfo,callback)=>{
        //修改时，一定要加上$set，要不然会将整个数据库修改，要家伙是哪个精确条件
        mydb.collection(collectionName).updateOne(conditionObj,{$set:studentInfo},(err,doc)=>{
            if(doc){
                callback(true);
            }else{
                callback(false);
            }
        })
    },
    deleteOne:(collectionName,conditionObj,callback)=>{
        mydb.collection(collectionName).deleteOne(conditionObj,(err,doc)=>{
            if(doc){
                callback(true);
            }else{
                callback(false);
            }
        })
    }
}